package com.fcscs.cservice.dao;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.fcscs.core.dao.Dao;
import com.fcscs.cservice.domain.InRoomCategory;

@Repository
public interface InRoomCategoryDao extends Dao {

	/**
	 * @param <E>
	 * @param cls
	 * @param id
	 * @return
	 */
	<E extends InRoomCategory> E get(Class<E> cls, long id);

	/**
	 * @param id
	 * @return
	 */
	InRoomCategory get(long id);
	
	List<InRoomCategory> getInRoomCategoryList(long orgId, long propId, int level, boolean isCurrent);
	
	List<InRoomCategory> getInRoomCategoryList(long orgId, long propId, long versionId, int level);

	/**
	 * @param loc
	 * @return
	 */
	Boolean delete(InRoomCategory loc);

	/**
	 * @param loc
	 */
	void permDelete(InRoomCategory loc);

	/**
	 * @param <E>
	 * @param loc
	 * @return
	 */
	<E extends InRoomCategory> void save(E loc);

	
	boolean isInRoomCategoryTaken(long orgId, long propId, String name, Long id, long versionId, int level);

}
